package fr.upstlse.glre.client.widgets.modelData;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.data.ModelData;

import fr.upstlse.glre.client.constante.fields.MessageConstante;
import fr.upstlse.glre.client.vo.communiquer.MessageEtatGWT;
import fr.upstlse.glre.client.vo.communiquer.MessageVOGWT;
import fr.upstlse.glre.client.vo.user.UserVOGWT;

public class MessageModelData extends BaseModelData {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2135811744575417375L;
	
	public MessageModelData(MessageVOGWT pMessageVOGWT) {
		set(MessageConstante.MODELDATA_ID.getValue(), pMessageVOGWT.getId());
		set(MessageConstante.MODELDATA_TITRE.getValue(), pMessageVOGWT.getTitre());
		set(MessageConstante.MODELDATA_CONTENU.getValue(), pMessageVOGWT.getContenu());
		set(MessageConstante.MODELDATA_DATE.getValue(), pMessageVOGWT.getDate());
		set(MessageConstante.MODELDATA_ETAT.getValue(), pMessageVOGWT.getEtat());
		set(MessageConstante.MODELDATA_EXPEDITEUR.getValue(), pMessageVOGWT.getExpediteur());
		set(MessageConstante.MODELDATA_PARENT.getValue(), pMessageVOGWT.getParent());
		set(MessageConstante.MODELDATA_FILS.getValue(), pMessageVOGWT.getFils());
	}
	
	public MessageModelData(ModelData pModelData) {
		set(MessageConstante.MODELDATA_ID.getValue(), pModelData.get(MessageConstante.MODELDATA_ID.getValue()));
		set(MessageConstante.MODELDATA_TITRE.getValue(), pModelData.get(MessageConstante.MODELDATA_TITRE.getValue()));
		set(MessageConstante.MODELDATA_CONTENU.getValue(), pModelData.get(MessageConstante.MODELDATA_CONTENU.getValue()));
		set(MessageConstante.MODELDATA_DATE.getValue(), pModelData.get(MessageConstante.MODELDATA_DATE.getValue()));
		set(MessageConstante.MODELDATA_ETAT.getValue(), pModelData.get(MessageConstante.MODELDATA_ETAT.getValue()));
		set(MessageConstante.MODELDATA_EXPEDITEUR.getValue(), pModelData.get(MessageConstante.MODELDATA_EXPEDITEUR.getValue()));
		set(MessageConstante.MODELDATA_PARENT.getValue(), pModelData.get(MessageConstante.MODELDATA_PARENT.getValue()));
		set(MessageConstante.MODELDATA_FILS.getValue(), pModelData.get(MessageConstante.MODELDATA_FILS.getValue()));
	}
	
	public static List<MessageModelData> toMessageModelDatas(Collection<MessageVOGWT> pMessageVOGWTs) {
		ArrayList<MessageModelData> lMessageModelDatas = new ArrayList<MessageModelData>(pMessageVOGWTs.size());
		for(MessageVOGWT lMessageVOGWT : pMessageVOGWTs) {
			MessageModelData lMessageModelData = new MessageModelData(lMessageVOGWT);
			lMessageModelDatas.add(lMessageModelData);
		}
		
		return lMessageModelDatas;
	}
	
	public MessageVOGWT toMessageVOGWT() {
		MessageVOGWT lMessageVOGWT = new MessageVOGWT();
		lMessageVOGWT.setId(((Long) get(MessageConstante.MODELDATA_ID.getValue())));
		lMessageVOGWT.setTitre((String) get(MessageConstante.MODELDATA_TITRE.getValue()));
		lMessageVOGWT.setContenu((String) get(MessageConstante.MODELDATA_CONTENU.getValue()));
		lMessageVOGWT.setDate((Date) get(MessageConstante.MODELDATA_DATE.getValue()));
		lMessageVOGWT.setEtat((MessageEtatGWT) get(MessageConstante.MODELDATA_ETAT.getValue()));
		lMessageVOGWT.setExpediteur((UserVOGWT) get(MessageConstante.MODELDATA_EXPEDITEUR.getValue()));
		lMessageVOGWT.setParent((MessageVOGWT) get(MessageConstante.MODELDATA_PARENT.getValue()));
		lMessageVOGWT.setFils((MessageVOGWT) get(MessageConstante.MODELDATA_FILS.getValue()));
		return lMessageVOGWT;
	}

}
